package logger

import "github.com/gookit/color"

// Level 日志等级
type Level int

const (
	TraceLevel Level = iota // 跟踪级别
	DebugLevel              // 调试级别
	InfoLevel               // 信息级别
	WarnLevel               // 警告级别
	ErrorLevel              // 错误级别
	FatalLevel              // 致命级别
	PanicLevel              // 恐慌级别
)

// String 返回日志等级的字符串表示
func (l Level) String() string {
	switch l {
	case TraceLevel:
		return "TRACE"
	case DebugLevel:
		return "DEBUG"
	case InfoLevel:
		return "INFO "
	case WarnLevel:
		return "WARN "
	case ErrorLevel:
		return "ERROR"
	case FatalLevel:
		return "FATAL"
	case PanicLevel:
		return "PANIC"
	default:
		return "UNKNW"
	}
}

// ColorStyle 返回日志等级对应的颜色样式（背景色+白色文字）
func (l Level) ColorStyle() color.Style {
	switch l {
	case TraceLevel:
		return color.Style{color.FgWhite, color.BgGray} // 白字灰底
	case DebugLevel:
		return color.Style{color.FgWhite, color.BgBlue} // 白字蓝底
	case InfoLevel:
		return color.Style{color.FgWhite, color.BgGreen} // 白字绿底
	case WarnLevel:
		return color.Style{color.FgWhite, color.BgYellow} // 白字黄底
	case ErrorLevel:
		return color.Style{color.FgWhite, color.BgRed} // 白字红底
	case FatalLevel:
		return color.Style{color.FgWhite, color.BgBlack} // 白字黑底
	case PanicLevel:
		return color.Style{color.FgWhite, color.BgMagenta} // 白字紫底
	default:
		return color.Style{color.FgWhite, color.BgGray}
	}
}
